package org.jsola.hr.service;

import org.jsola.core.service.IService;
import org.jsola.hr.dao.IAttendPunchRecordDAO;
import org.jsola.hr.dto.AttendPunchDTO;
import org.jsola.hr.entity.AttendPunchRecordDO;
import org.jsola.hr.query.AttendPunchCheckQuery;
import org.jsola.hr.vo.AttendPunchCheckVO;
import org.jsola.hr.vo.AttendPunchVO;
import org.jsola.user.core.TokenUser;

import java.lang.reflect.InvocationTargetException;

/**
 * @author wxz
 */
public interface IAttendPunchService extends IService<IAttendPunchRecordDAO, AttendPunchRecordDO> {

    /**
     * 检查考勤打卡
     *
     * @param attendPunchCheckQuery 检查考勤打卡参数
     * @param tokenUser 当前用户
     * @return 检查考勤打卡
     */
    AttendPunchCheckVO checkPunch(AttendPunchCheckQuery attendPunchCheckQuery, TokenUser tokenUser);

    AttendPunchCheckVO checkPunch2(AttendPunchCheckQuery attendPunchCheckQuery, TokenUser tokenUser);

    /**
     * 考勤打卡
     *
     * @param attendPunchDTO 考勤打卡
     * @param tokenUser
     * @return 考勤打卡
     */
    AttendPunchVO punch(AttendPunchDTO attendPunchDTO, TokenUser tokenUser);

    AttendPunchVO punch2(AttendPunchDTO attendPunchDTO, TokenUser tokenUser);

    void punchBatchSimulation(AttendPunchDTO attendPunchDTO) throws InvocationTargetException, IllegalAccessException;

    AttendPunchCheckVO checkPunchBatchTest(AttendPunchCheckQuery attendPunchCheckQuery, TokenUser tokenUser, String yearly, String monthly, String daily);

    AttendPunchVO punchBatchTest(AttendPunchDTO attendPunchDTO, TokenUser tokenUser, String yearly, String monthly, String daily);
}
